<?php

namespace app\common\controller;

use think\Controller;
use Yansongda\Pay\Pay;
use Yansongda\Pay\Log;

class Wxpay extends Controller
{

    /**
     * @param $order_no [订单号]
     * @param $money [支付金额]
     * @param $content [备注]
     * @param string $openid [openId]
     * @param $way [支付方式]
     * @param $url [回调地址]
     * @return
     */
    public function index($order_no,$money,$content,$openid,$url)
    {

        $mch_id = config('mch_id');
        $mchid_key = config('mchid_key');
        $config = [
            'miniapp_id' => config('wx_mini_appid'),
            'mch_id' => $mch_id,
            'key' => $mchid_key,
            'notify_url' => url($url,'','',true), // 异步通知地址 ,
            'log' => [ // optional
                'file' => './logs/wechat.log',
                'level' => 'info', // 建议生产环境等级调整为 info，开发环境为 debug
                'type' => 'single', // optional, 可选 daily.
                'max_file' => 30, // optional, 当 type 为 daily 时有效，默认 30 天
            ],
            'http' => [ // optional
                'timeout' => 5.0,
                'connect_timeout' => 5.0,
                // 更多配置项请参考 [Guzzle](https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html)
            ],
            'mode' => 'normal', // optional, dev/hk;当为 `hk` 时，为香港 gateway。
        ];
        $order = [
            'out_trade_no' => $order_no,
            'total_fee' => $money*100, // **单位：分**
            'body' => $content,
            'openid' => $openid,
        ];
        $wechatpay = Pay::wechat($config);
        return $wechatpay->miniapp($order);
    }


    /**
     * 微信回调
     * @param $arr
     * @return bool|string
     */
    public function notify($arr)
    {
        $config = [
            'appid' => config('appid'), // APP APPID
            'app_id' => config('app_id'), // 公众号 APPID
            'miniapp_id' => config('miniapp_id'), // 小程序 APPID
            'mch_id' => config('mch_id'),
            'key' => config('mchid_key'),
            //'notify_url' => url($url,'','',true), // 支付宝异步通知地址 ,
            'cert_client' => Env::get('app_path').'common/payment/cert/apiclient_cert.pem', // optional，退款等情况时用到
            'cert_key' => Env::get('app_path').'common/payment/cert/apiclient_key.pem',// optional，退款等情况时用到
            'log' => [ // optional
                'file' => './logs/wechat.log',
                'level' => 'info', // 建议生产环境等级调整为 info，开发环境为 debug
                'type' => 'single', // optional, 可选 daily.
                'max_file' => 30, // optional, 当 type 为 daily 时有效，默认 30 天
            ],
            'http' => [ // optional
                'timeout' => 5.0,
                'connect_timeout' => 5.0,
                // 更多配置项请参考 [Guzzle](https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html)
            ],
            'mode' => 'normal', // optional, dev/hk;当为 `hk` 时，为香港 gateway。
        ];
        $pay = Pay::wechat($config);

        try{
            $data = $pay->verify($arr); // 是的，验签就这么简单！
            if($data){
                return  true;
            }
            Log::debug('Wechat notify', $data->all());
        } catch (\Exception $e) {
            return  $e->getMessage();
            //
        }
    }
}